<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=1000px, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://unpkg.com/vue"></script>
</head>

<body>
    <div id="app">
        {{ message }}

        <br/>
        <span v-bind:title="message">
            鼠标悬停几秒钟查看此处动态绑定的提示信息！
        </span>

        <br/>

        <p v-if="seen">现在你看到我了</p>

        <br>

        <p>{{ message }}</p>
        <button v-on:click="reverseMessage">逆转消息</button>

        <br>

        <label for="input-1">v-model双向</label>
        <input id="input-1" v-model="message">

        <br>
        <label for="input-1">v-bind:value单向</label>
        <input id="input-2" v-bind:value="message">

        <div id="app-7">
            <ol>
                <!--
                    现在我们为每个 todo-item 提供 todo 对象
                    todo 对象是变量，即其内容可以是动态的。
                    我们也需要为每个组件提供一个“key”，晚些时候我们会做个解释。
                  -->
                <todo-item v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id">
                </todo-item>
            </ol>
        </div>

        <label for="input-1">计算属性get/set</label>
        <input id="input-2" v-model="firstName">
        <input id="input-2" v-model="lastName">
        <input id="input-2" v-model="fullName">

        <br>

        <div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">
            {{ message }}
        </div>
        <!-- 一种模板定义方式 -->
        <!-- <script type="text/x-template" id="checkbox-template">
            <div class="checkbox-wrapper" @click="check">
                <div :class="{ checkbox: true, checked: checked }"></div>
                <div class="title">????</div>
            </div>
        </script> -->
        <script type="text/html" id="checkbox-template" src="xx.html"></script>
        <my-checkbox></my-checkbox>
    </div>
    <script>
        Vue.component('todo-item', {
            // todo-item 组件现在接受一个
            // "prop"，类似于一个自定义属性
            // 这个属性名为 todo。
            props: ['todo'],
            template: '<li>{{ todo.text }}</li>'
        });
        Vue.component('my-checkbox', {
            template: '#checkbox-template',
            data() {
                return {
                    checked: false,
                    title: 'Check me'
                }
            },
            methods: {
                check() {
                    this.checked = !this.checked;
                }
            }
        });
        var app = new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue!',
                seen: true,
                groceryList: [{
                        id: 0,
                        text: '蔬菜'
                    },
                    {
                        id: 1,
                        text: '奶酪'
                    },
                    {
                        id: 2,
                        text: '随便其他什么人吃的东西'
                    }
                ],
                firstName: 'Foo',
                lastName: 'Bar',
                isActive: true,
                hasError: true
            },
            computed: {
                fullName: {
                    // getter
                    get: function () {
                        return this.firstName + ' ' + this.lastName
                    },
                    // setter
                    set: function (newValue) {
                        var names = newValue.split(' ')
                        this.firstName = names[0]
                        this.lastName = names[names.length - 1]
                    }
                }
            },
            methods: {
                reverseMessage: function () {
                    this.message = this.message.split('').reverse().join('')
                }
            }
        })
    </script>
</body>

</html>